package com.jet.member.service;

import com.jet.core.model.vo.PageVo;
import com.jet.member.domain.dto.MemberDto;
import com.jet.member.domain.entity.Member;
import com.baomidou.mybatisplus.extension.service.IService;
import com.jet.member.domain.entity.MemberLevel;
import com.jet.member.domain.query.MemberQuery;
import com.jet.member.domain.query.MemberSummaryQuery;
import com.jet.member.domain.vo.MemberInfoVo;
import com.jet.member.domain.vo.MemberListVo;
import com.jet.member.domain.vo.MemberRankVo;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author author
 * @since 2025-03-02
 */
public interface IMemberService extends IService<Member> {

    void create(long merchantNo, long storeNo, String accountId, MemberDto dto);

    Member create(long merchantNo, long storeNo, String accountId, MemberDto dto,
                  long initRecharge, long initIntegral);

    void memberImport(long merchantNo, long storeNo, String accountId, MultipartFile file);

    void edit(long merchantNo, long storeNo, String accountId, String id, MemberDto dto);

    void editStatus(long merchantNo, long storeNo, String accountId, String id, Integer status);

    void deleteById(String id);

    void syncMemberLevel(long merchantNo);

    void syncMemberLevel(long merchantNo, String memberId);

    MemberInfoVo findById(String id);

    List<MemberListVo> findAllByIds(long merchantNo, List<String> ids);

    List<MemberListVo> findAll(long merchantNo);

    PageVo<MemberListVo> page(long merchantNo, MemberQuery query);

    List<MemberListVo> memberSearch(long merchantNo, String searchKey);

    List<Member> summaryList(MemberSummaryQuery query);

    List<MemberRankVo> rank(long merchantNo);
}
